package com.sale.system.service;

import com.sale.common.mybatis.core.page.PageQuery;
import com.sale.common.mybatis.core.page.TableDataInfo;
import com.sale.system.domain.SysCategory;
import com.sale.system.domain.SysMaterialCoding;
import com.sale.system.domain.dto.SysMaterialCodingDto;
import com.sale.system.domain.dto.SysTheDropDto;
import com.sale.system.domain.vo.SysMaterialCodingVo;

import java.util.List;

/**
 * @Author: YSL
 * @Date: 2023-07-10 09:24:21
 * @Desc: 物料类别表
 */
public interface ISysMaterialCodingService{


    /**
     * 分页查询物料类别
     * @param sysMaterialCodingVo
     * @param pageQuery
     * @return
     */
    TableDataInfo<SysMaterialCodingDto> selectSysMaterialCodingList(SysMaterialCodingVo sysMaterialCodingVo, PageQuery pageQuery);

    /**
     * 根据物料类别id查询详情
     * @param codingId
     * @return
     */
    SysMaterialCoding getSysMaterialCodingById(Long codingId);

    /**
     * 新增物料类别
     * @param sysMaterialCodingVo
     * @return
     */
    int insertMaterialCoding(SysMaterialCodingVo sysMaterialCodingVo) throws Exception;

    /**
     * 修改物料类别
     * @param sysMaterialCodingVo
     * @return
     */
    int updateMaterialCoding(SysMaterialCodingVo sysMaterialCodingVo) throws Exception;

    /**
     * 删除物料类别
     * @param codingId
     * @return
     */
    int deleteMaterialCoding(Long codingId) throws Exception;

    /**
     * 物料类别下拉
     * @return
     */
    List<SysTheDropDto> selectDropdown(SysMaterialCodingVo sysMaterialCodingVo);

    /**
     * 根据物料编码获取对应类别信息（dubbo 调用）
     */
    SysCategory getByCode(String materialCode);

    /**
     * 获取全部物料类别下拉
     */
    List<SysTheDropDto> selectAllDropdown();
}

